// 两个文件分别进行编译成功
// 链接时报错，myFunc函数重复定义了

/**
 * 大多数命名冲突发生在两种情况下：
 *   两个（或多个）相同名称的函数（或全局变量）被引入到属于同一程序的单独文件中。这将导致链接器错误，如上所示。
 *   两个（或多个）相同名称的函数（或全局变量）被引入到同一个文件中。这将导致编译器错误。
 * 随着程序变得越来越大并且使用更多的标识符，引入命名冲突的可能性显着增加。
 * 
 * 好消息是 C++ 提供了大量避免命名冲突的机制。局部作用域就是这样一种机制，它可以防止函数内部定义的局部变量相互冲突。
 * 但局部作用域不适用于函数名称。那么我们如何防止函数名称相互冲突呢？
 * 
 * 在命名空间中声明的名称不会被误认为是在另一个范围中声明的相同名称。
 * 
 * 全局命名空间
 * 在 C++ 中，任何未在类、函数或命名空间内定义的名称都被视为隐式定义的命名空间的一部分，称为全局命名空间（有时也称为全局作用域）。
 * 
 * c++标准库命名空间 standard
 * using namespace std
 * 
 * 最佳实践
 * 使用显式命名空间前缀来访问命名空间中定义的标识符。
 * 许多文本、教程甚至某些 IDE 都推荐或在程序顶部使用 using 指令。然而，以这种方式使用，这是一种不好的做法，并且非常不鼓励。
 */

#include <iostream>

// 全局空间
void myFunc(int x) {
    std::cout << 2 * x << "\n";
}

int main() {
    return 0;
}